在 SPSS 中创建 APA 风格的相关表

作者:Ruben Geert van den Berg,发布于 相关分析SPSS 中的表格

引言与练习数据文件

SPSS 中进行相关分析时,我们通常会得到 p 值。但在某些情况下,我们可能不需要 p 值:如果我们的数据代表整个总体,那么 p 值实际上是没有意义的。然而,在 SPSS 的相关分析对话框中,我们无法直接获得不带显著性水平的相关系数。本教程将展示两种方法来实现这个目标。我们将使用 adolescents-clean.sav 数据文件进行演示。

APA 格式的相关矩阵 APA 建议的相关表格式

方法一:使用 FACTOR(因子分析)

一个可行的选择是依次点击:A nalyze(分析) SPSS 菜单箭头 D imension Reduction(降维) SPSS 菜单箭头 F actor(因子分析),如下图所示。

SPSS 因子分析菜单

接下来,将 iqwellb 变量移动到变量框中,并按照以下截图中的步骤操作。

SPSS 从因子分析获取相关矩阵

点击 P aste(粘贴) 会生成以下 SPSS 语法。它将创建一个不包含显著性水平或样本量的相关矩阵。请注意,FACTOR 默认使用列表删除(listwise deletion)缺失值,但我们可以很容易地将其更改为成对删除(pairwise deletion)。此外,如果我们需要多个相关矩阵,可以大幅缩短语法

从 FACTOR 语法生成相关矩阵

***Syntax pasted from Analyze - Dimension Reduction - Factor.
**
FACTOR
/VARIABLES iq depr anxi soci wellb
/MISSING pairwise /* WATCH OUT HERE: DEFAULT IS LISTWISE! */
/ANALYSIS iq depr anxi soci wellb
/PRINT CORRELATION EXTRACTION
/CRITERIA MINEIGEN(1) ITERATE(25)
/EXTRACTION PC
/ROTATION NOROTATE
/METHOD=CORRELATION.

***Can be shortened to...
**
factor
/variables iq to wellb
/missing pairwise
/print correlation.

***...or even...
**
factor
/variables iq to wellb
/print correlation.

***but this last version uses listwise deletion of missing values.**

结果

SPSS 从 FACTOR 命令获取相关矩阵

使用成对删除时,我们将不再看到每个相关系数使用的样本量。我们可能不希望在表格中显示这些信息,但也许我们想在表格标题中说明一下。更重要的是,我们无法得知哪些相关系数具有统计显著性,哪些没有。我们的第二种方法可以很好地处理这两个问题。

方法二:调整默认的相关表

创建相关矩阵最快的方法是直接运行 correlations iq to wellb.。但是,有时我们希望标记出具有统计显著性的相关系数。我们可以通过添加一行代码来实现。

***Create full correlation matrix and flag statistically significant correlations.
**
correlations iq to wellb
/print nosig.

这将生成一个标准的、包含所有样本量和 p 值的相关矩阵。但是,现在我们将使除了实际相关系数之外的所有内容都不可见。

调整透视表结构

首先,右键单击相关表,然后依次点击:Edit C o ntent(编辑内容) SPSS 菜单箭头 In Separate W indow(在单独窗口中),如下图所示。

SPSS 透视表管理器

P ivot(透视)菜单中选择 P ivoting Trays(透视托盘)。

SPSS 透视托盘菜单

将 Statistics (row)(统计量(行))维度拖放到 LAYER(层)区域,然后关闭透视表编辑器。

SPSS 透视托盘

结果

SPSS 没有显著性的相关矩阵最终结果

更快地获得相同的结果?

如果你喜欢最终结果,你可能想知道是否有更快的方法来实现它。是的,有的:下面的 Python 语法可以对输出中的所有透视表进行调整。因此,在运行它之前,请确保输出中只有相关表,否则可能会崩溃。

***Move last row dimension into layer for all tables in output window. This
syntax requires the SPSS Python Essentials.
**
begin program.
import SpssClient
SpssClient.StartClient()
oDoc = SpssClient.GetDesignatedOutputDoc()
oItems = oDoc.GetOutputItems()
for index in range(oItems.Size()):
    oItem = oItems.GetItemAt(oItems.Size() - index - 1)
    if oItem.GetType() == SpssClient.OutputItemType.PIVOT:
        pTable = oItem.GetSpecificType()
        pManager = pTable.PivotManager()
        nRows = pManager.GetNumRowDimensions()
        rDim = pManager.GetRowDimension(0)
        rDim.MoveToLayer(0)
SpssClient.StopClient()
end program.